Como definir e implementar interfaces.
Cuando una clase implementa una interfaz se suele decir que se establece un contrato de manera que la clase se compromete a tener que implementar los métodos que hay en la interfaz.
Hay muchas interfaces predefinidas que podemos usar en nuestras clases, por ejemplo IComparable, esta interfaz obliga a definir un metodo CompareTo cuyo objetivo es comparar dos objetos.
Para implementar una interfaz en una clase simplemente tenemos que poner dos puntos (:) y a continuación el nombre de la interfaz, después a mayores tenemos que implementar los metodos que nos exisge la interfaz.
En el siguiente ejemplo implementamos la interfaz IComparable en la clase persona:
namespace PersonaApp
{
public class Persona : IComparable<Persona>
{
string nombre;
public Persona(string nombre)
{
this.nombre = nombre;
}
public int CompareTo(Persona? other)
{
return nombre.CompareTo(other?.nombre);
}
}
}
NOTA: La interfaz IComparable tiene dos implementaciones posibles. una con generics para indicar un tipo de dato concreto (como en este caso pesrona) y otra con la clase object.
Para definir nuestras propias interfaces lo hacemos de la siguiente manera usando la palabra reservada interface:
namespace PersonaApp
{
public interface IEstudiante
{
int SumarNotas();
}
}
Los metodos que se indican en la interfaz siempre serán públicos ya que solo se indican los métodos que serán accesibles a la hora de utilizar la clase de manera externa.
A continuación implementamos la interfaz y sus metodos requeridos en la clase persona:
namespace PersonaApp
{
public class Persona : IEstudiante
{
string nombre;
List<int> listaNotas;
public Persona(string nombre)
{
this.nombre = nombre;
listaNotas = new List<int>();
listaNotas.Add(6);
listaNotas.Add(8);
listaNotas.Add(9);
listaNotas.Add(6);
}
public int SumarNotas()
{
int suma = 0;
listaNotas.ForEach(x => suma += x);
return suma;
}
}
}
C# | Interfaces